import type { PluginOption } from "vite";
import Unocss from 'unocss/vite'
import AppLoading from "vite-plugin-app-loading";
import autoImport from 'unplugin-auto-import/vite'
import VueRouter from 'unplugin-vue-router/vite'
import Components from 'unplugin-vue-components/vite'
export default function createVitePlugins(mode: string, isBuild = false) {
    const vitePlugins: (PluginOption | PluginOption[])[] = [

        // 应用加载动画
        AppLoading('loading.html'),
        // UnoCSS 核心插件（必须）
        Unocss(),
        // 自动导入 Vue、Vue Router、Pinia 等全局 API
        autoImport({
            imports: [
                'vue',
                'vue-router',
                'pinia', {
                    'vue-router': [
                        'onBeforeRouteLeave', // ✅ 添加路由守卫
                        'onBeforeRouteUpdate',
                    ]
                }
            ],
            dts: './src/types/auto-imports.d.ts',
            dirs: [
                './src/store/modules',
                './src/utils/composables',
            ],
        }),
        // 组件自动导入
        Components({
            // 指定组件位置（根据你复制组件的实际路径调整）
            globs: [
                'src/ui/components/*/index.vue',    // UI组件
                'src/components/*/index.vue',       // 业务组件
            ],

            // 生成的类型声明文件
            dts: 'src/types/components.d.ts',

            // 其他配置选项
            deep: true,              // 深度扫描
            directoryAsNamespace: false,  // 不使用目录作为命名空间
        }),
        // 🎯 关键：在 vue 插件之前添加
        VueRouter({
            // 配置选项
            routesFolder: 'src/views',
            extensions: ['.vue'],
            dts: 'src/types/typed-router.d.ts',
            routeBlockLang: 'yaml', // ✅ 支持 <route lang="yaml">

            // 兼容性配置
            exclude: ['**/components/**'],
            importMode: 'async',
        }),


    ];
    return vitePlugins;
};